package E_2024;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*
    智能手机方便了我们生活的同时，也侵占了我们不少的时间。“手机App防沉迷系统”能够让我们每天合理地规划手机App使用时间，在正确的时间做正确的事。
    它的大概原理是这样的:
        1.在一天24小时内，可以注册每个App的允许使用时段
        2.一个时间段只能使用一个App
        3.App有优先级，数值越高，优先级越高。注册使用时段时，如果高优先级的App时间和低优先级的时段有冲突，则系统会自动注销低优先级的时段，如果App的优先级相同，则后添加的App不能注册。
        请编程实现，根据输入数据注册App，并根据输入的时间点，返回时间点使用的App名称，如果该时间点没有注册任何App，请返回字符串“NA”。
    输入描述
        第一行表示注册的App数量 N (N <100)
        第二部分包括 N 行，每行表示一条App注册数据
        最后一行输入一个时间点，程序即返回该时间点使用的App
        2
        App1 1 09:00 10:00
        App2 2 11:00 11:30
        09:30
    数据说明如下:
        1.N行注册数据以空格分隔，四项数依次表示: App名称、优先级、起始时间、结束时间
        2.优先级1~5ÿ
 */
public class E_100_15 {
    public static void main(String[] args) {
        List<App> apps = new ArrayList<>();
        apps.add(new App("app1",1,"09:00","10:00"));
        apps.add(new App("app2",2,"11:00","11:30"));
        ans(apps,"11:30");
    }
    public static void ans(List<App> apps, String time){
        int[] temp = new int[24*60];
        Arrays.fill(temp, -1);
        for (int i = 0; i < apps.size(); i++) {
            App x = apps.get(i);
            String[] ss = x.start.split(":");
            int si = Integer.parseInt(ss[0])*60+Integer.parseInt(ss[1]);
            String[] es = x.end.split(":");
            int ei = Integer.parseInt(es[0])*60+Integer.parseInt(es[1]);
            if (temp[si] == -1 || x.yx > apps.get(temp[si]).yx){
                for (; si <= ei; si++) {
                    temp[si] = i;
                }
            }
        }
        String[] ts = time.split(":");
        int ti = Integer.parseInt(ts[0])*60+Integer.parseInt(ts[1]);
        System.out.println(temp[ti] >= 0 ? apps.get(temp[ti]).name : "NA");
    }
    static class App{
        String name;
        int yx;
        String start;
        String end;
        App(String name, int yx, String start, String end){
            this.name = name;
            this.yx = yx;
            this.start = start;
            this.end = end;
        }
    }
}
